
/**
 * 处理TronLink消息事件
 *
 * @param type 事件类型，'add'为添加事件监听器，'remove'为移除事件监听器
 * @param callback 回调函数，用于处理不同类型的事件
 * @returns 无返回值
 */
const handleMessageEvent = (e, callback) => {
    const { message } = e.data;
    if (message && message.action === "acceptWeb") {
        callback({
            type: "acceptWeb",
            node: message.data.data.node,
            msg: "TronLink钱包已连接"
        });
    }
    // 处理断开连接事件
    if (message && message.action === "disconnect") {
        callback({
            type: "disconnect",
            msg: "TronLink钱包已断开连接"
        });
    }
    // setNode 为切换节点
    if (message && message.action === "setNode") {
        const chainId = Number(
            message.data.node.chainId.endsWith("n")
                ? message.data.node.chainId.slice(0, -1)
                : message.data.node.chainId
        );
        callback({
            type: "setNode",
            node: message.data.node,
            msg: `切换网络节点：${chainId}`
        })
    }
    // accountsChanged 账户切换
    if (message && message.action === "accountsChanged") {
        const address = message.data.address;
        callback({
            type: "accountsChanged",
            address,
            msg: `账户切换：${address}`
        })
    }

}
export const handleTronLinkMessageEvent = async (type, callback) => {
    // 监听浏览器的消息事件，处理TronLink插件发送的数据
    if (type == 'add') {
        window.addEventListener("message", (e) => handleMessageEvent(e, callback));
    }
    // 移除事件监听器
    if (type == 'remove') {
        window.removeEventListener("message", (e) => handleMessageEvent(e, callback));
    }
}